export interface Project {
    id: number,
    name: string,
    path: string,
    web_url: string,
}
export interface ProjectEx extends Project {
    name_with_namespace: string,
    path_with_namespace: string,
    description: string,
    created_at: string,
    default_branch: string,
    tag_list: string[],
    topics: string[],
    ssh_url_to_repo: string,
    http_url_to_repo: string,
    readme_url?: string | null,
    avatar_url?: string | null,
    forks_count: number,
    star_count: number,
    last_activity_at: string,
    namespace: NameSpace,
    _links: {
        self: string,
        issues: string,
        merge_requests: string,
        repo_branches: string,
        labels: string,
        events: string,
        members: string
    },
    packages_enabled: boolean,
    empty_repo: boolean,
    archived: boolean,
    visibility: "private" | "internal" | "public",
    resolve_outdated_diff_discussions: boolean,
    container_expiration_policy: {
        cadence: string,
        enabled: boolean,
        keep_n: number,
        older_than: string,
        name_regex: string,
        name_regex_keep: string | null,
        next_run_at: string
    },
    issues_enabled: boolean,
    merge_requests_enabled: boolean,
    wiki_enabled: boolean,
    jobs_enabled: boolean,
    snippets_enabled: boolean,
    container_registry_enabled: boolean,
    service_desk_enabled: boolean,
    service_desk_address: string | null,
    can_create_merge_request_in: boolean,
    issues_access_level: "enabled",
    repository_access_level: "enabled",
    merge_requests_access_level: "enabled",
    forking_access_level: "enabled",
    wiki_access_level: "enabled",
    builds_access_level: "enabled",
    snippets_access_level: "enabled",
    pages_access_level: "private",
    operations_access_level: "enabled",
    analytics_access_level: "enabled",
    container_registry_access_level: "enabled",
    security_and_compliance_access_level: "private",
    emails_disabled: null,
    shared_runners_enabled: boolean,
    lfs_enabled: boolean,
    creator_id: number,
    import_url: string | null,
    import_type: string | null,
    import_status: string,
    open_issues_count: number,
    ci_default_git_depth: number,
    ci_forward_deployment_enabled: boolean,
    ci_job_token_scope_enabled: boolean,
    ci_separated_caches: boolean,
    public_jobs: boolean,
    build_timeout: number,
    auto_cancel_pending_pipelines: "enabled",
    build_coverage_regex: string | null,
    ci_config_path: string,
    shared_with_groups: unknown[],
    only_allow_merge_if_pipeline_succeeds: boolean,
    allow_merge_on_skipped_pipeline: boolean | null,
    restrict_user_defined_variables: boolean,
    request_access_enabled: boolean,
    only_allow_merge_if_all_discussions_are_resolved: boolean,
    remove_source_branch_after_merge: boolean,
    printing_merge_request_link_enabled: boolean,
    merge_method: "merge",
    squash_option: "default_off",
    suggestion_commit_message: null,
    merge_commit_template: null,
    squash_commit_template: null,
    auto_devops_enabled: boolean,
    auto_devops_deploy_strategy: "continuous",
    autoclose_referenced_issues: boolean,
    repository_storage: "default",
    keep_latest_artifact: boolean,
    runner_token_expiration_interval: null,
    approvals_before_merge: number,
    mirror: boolean,
    external_authorization_classification_label: null,
    marked_for_deletion_at: null,
    marked_for_deletion_on: null,
    requirements_enabled: boolean,
    requirements_access_level: "enabled",
    security_and_compliance_enabled: boolean,
    compliance_frameworks: [],
    issues_template: null,
    merge_requests_template: null,
    merge_pipelines_enabled: boolean,
    merge_trains_enabled: boolean,
    permissions: {
        project_access: null,
        group_access: {
            access_level: number,
            notification_level: number
        }
    }
}
export interface NameSpace {
    id: number,
    name: string,
    path: string,
    kind: string,
    full_path: string,
    parent_id: number,
    avatar_url: string | null,
    web_url: string
}
export interface CreateProjectParams {
    name: string,
    path: string,
    namespace_id: number,
    description: string | null,
    visibility: "private" | "internal" | "public",
    initialize_with_readme: boolean,
}

export interface RepositoryBranch {
    name: string,
    commit: RepositoryCommit
    merged: boolean,
    protected: boolean,
    developers_can_push: boolean,
    developers_can_merge: boolean,
    can_push: boolean,
    default: boolean,
    web_url: string
}
export interface RepositoryCommit {
    id: string,
    short_id: string,
    created_at: string,
    parent_ids: string[],
    title: string,
    message: string,
    author_name: string,
    author_email: string,
    authored_date: string,
    committer_name: string,
    committer_email: string,
    committed_date: string,
    trailers: string,
    web_url: string
}
